// components/slide-delete/slide-delete.ts
Component({
    /**
     * 组件的属性列表
     */
    properties: {
        friendList: {
            type: Array,
            value: [
                {
                    id: "324242",
                    name: "Benjamin",
                    mbti: "",
                    lastMessage: "",
                    avatar: "https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg",
                    xmove: 0,
                    unReadCount: 0,
                },
            ],
            observer(newVal, old, path) {
                if (newVal && newVal.length) {
                    this.setData({
                        friendList: newVal,
                    });
                }
            },
        },
    },

    /**
     * 组件的初始数据
     */
    data: {
        startX: 0,
    },

    /**
     * 组件的方法列表
     */
    methods: {
        /**
         * 显示删除按钮
         */
        showDeleteButton(e: baseEvent) {
            let productIndex = e.currentTarget.dataset.productindex;
            this.setXmove(productIndex, -65);
        },

        /**
         * 隐藏删除按钮
         */
        hideDeleteButton: function (e: baseEvent) {
            let productIndex = e.currentTarget.dataset.productindex;

            this.setXmove(productIndex, 0);
        },

        /**
         * 设置movable-view位移
         */
        setXmove(productIndex: number, xmove: number) {
            let friendList = this.data.friendList;
            friendList[productIndex].xmove = xmove;

            this.setData({
                friendList: friendList,
            });
        },

        /**
         * 处理movable-view移动事件
         */
        handleMovableChange(e: baseEvent) {
            if (e.detail.source === "friction") {
                if (e.detail.x < -30) {
                    this.showDeleteButton(e);
                } else {
                    this.hideDeleteButton(e);
                }
            } else if (
                e.detail.source === "out-of-bounds" &&
                e.detail.x === 0
            ) {
                this.hideDeleteButton(e);
            }
        },

        /**
         * 处理touchstart事件
         */
        handleTouchStart(e: any) {
            // this.startX = e.touches[0].pageX
            this.setData({ startX: e.touches[0].pageX });
        },

        /**
         * 处理touchend事件
         */
        handleTouchEnd(e: any) {
            if (
                e.changedTouches[0].pageX < this.data.startX &&
                e.changedTouches[0].pageX - this.data.startX <= -30
            ) {
                this.showDeleteButton(e);
            } else if (
                e.changedTouches[0].pageX > this.data.startX &&
                e.changedTouches[0].pageX - this.data.startX < 30
            ) {
                this.showDeleteButton(e);
            } else {
                this.hideDeleteButton(e);
            }
        },
        goUserChat(e: any) {
            const { info } = e.currentTarget.dataset;
            this.msgRead(info);
            wx.navigateTo({
                url: `/pages/profile/userChat/index?info=${JSON.stringify(
                    info
                )}`,
            });
        },
        /**
         * 将消息设置未已读，调用send发送已读回执
         * @param info
         */
        msgRead(info: any) {
            let option = {
                chatType: "singleChat", // 会话类型，设置为单聊。
                type: "channel", // 消息类型。channel 表示会话已读回执。
                to: info.userId, // 接收消息对象的用户 ID。
            };
            let msg = wx.WebIM.message.create(option);
            wx.conn.send(msg);
        },
        /**
         * 删除会话
         */
        handleDeleteProduct(e: baseEvent) {
            const id = e.currentTarget.dataset.id;
            // let friendList = this.data.friendList
            // let productIndex = friendList.findIndex(item => item.id === id)
            // friendList.splice(productIndex, 1)
            // this.setData({
            //   friendList
            // })
            // if (friendList[productIndex]) {
            //   this.setXmove(productIndex, 0)
            // }
            let options = {
                // 会话 ID：单聊为对方的用户 ID，群聊为群组 ID。
                channel: id,
                // 会话类型：（默认） `singleChat`：单聊；`groupChat`：群聊。
                chatType: "singleChat",
                // 删除会话时是否同时删除服务端漫游消息。
                // deleteRoam: true,
                deleteRoam: true,
            };
            wx.conn
                .deleteConversation(options)
                .then((res) => {
                    console.log(res);
                    this.triggerEvent("deleteProduct");
                })
                .catch((e) => {
                    // 删除失败。
                });
        },
    },
});
